// 任务队列日志
export default class TaskLog {
  constructor() {
    this.logList = [];
  }
  addLogItem(params) {
    const { taskId, data, addTime } = params;
    const logItem = {
      taskId, // 当前taskId
      status: "未执行", // 执行状态 ： 成功 | 失败 ｜ 未执行
      data, // 原始数据
      addTime: addTime ? addTime : "", // 新增时间
      runEndTime: "", // 更新任务执行完成的时间
      response: null, // 异步返回的结果
      runCount:0,// 当前任务执行次数
    };
    this.logList.push(logItem);
  }
  // 更新日志
  updateLog(params) {
    const { taskId, status, runEndTime, response } = params;
    return new Promise((resolve, reject) => {
      if (!taskId) {
        reject("更新日志失败: 缺少id");
      }
      // 如果存在id  则更新数据 否则 新增
      const obj = this.logList.find((logItem) => logItem.taskId === taskId);
      if (obj) {
        // 更新日志状态
        status && (obj.status = status); // 更新状态
        runEndTime && (obj.runEndTime = runEndTime); // 更新任务执行完成的时间
        response && (obj.response = response); // 更新异步返回的结果
        obj.runCount++
        resolve("更新日志成功");
      } else {
        // 新增日志
        this.addLogItem(params);
        resolve("更新日志成功");
      }
    });
  }
  // 展示成功日志
  showSeccessLogList() {
    return this.logList.filter((item) => item.status == "成功");
  }
  // 展示失败日志
  showErrorLogList() {
    return this.logList.filter((item) => item.status == "失败");
  }
  // 展示未执行日志
  showNoRunLogList() {
    return this.logList.filter((item) => item.status == "未执行");
  }
  // 展示异常的日志
  showErrorData() {
    return this.logList.filter(
      (item) =>
        item.status != "成功" &&
        item.status != "失败" &&
        item.status != "未执行"
    );
  }
  //清空日志
  clearLogList() {
    this.logList = [];
  }
}
